import {createRouter, createWebHistory, RouteRecordRaw} from "vue-router";

import basicsLayout from "@/layouts/basicsLayout/index.vue";
import controlLayout from "@/layouts/controlLayout/index.vue"

/**
 * 建议：路由 path 路径与文件夹名称相同，找文件可浏览器地址找，方便定位文件位置
 *
 * 路由meta对象参数说明
 * meta: {
 *      title:          菜单栏及 tagsView 栏、菜单搜索名称（国际化）
 *      isLink：        是否超链接菜单，开启外链条件，`1、isLink: 链接地址不为空 2、isIframe:false`
 *      isHide：        是否隐藏此路由
 *      isKeepAlive：   是否缓存组件状态
 *      isAffix：       是否固定在 tagsView 栏上
 *      isIframe：      是否内嵌窗口，开启条件，`1、isIframe:true 2、isLink：链接地址不为空`
 *      roles：         当前路由权限标识，取角色管理。控制路由显示、隐藏。超级管理员：admin 普通角色：common
 *      icon：          菜单、tagsView 图标，阿里：加 `iconfont xxx`，fontawesome：加 `fa xxx`
 * }
 */

// 扩展 RouteMeta 接口
declare module "vue-router" {
    interface RouteMeta {
        title?: string;
        isLink?: string;
        isHide?: boolean;
        isKeepAlive?: boolean;
        isAffix?: boolean;
        isIframe?: boolean;
        roles?: string[];
        icon?: string;
    }
}

const routes: Array<RouteRecordRaw> = [
    {
        path: "/login",
        component: () => import("../views/login/LoginView.vue"),
    },
    {
        path: "/404",
        component: () => import("../views/404.vue"),
    },
    {
        path: "/control",
        name: "control",
        component: controlLayout,
    },
    {
        path: "/basics",
        name: "basics",
        component: basicsLayout,
    },
    {
        path: "/",
        name: "空白页",
        component: controlLayout,
        children: [
            {
                meta: {
                    title: "空白页面"
                },
                path: "/emptyPage",
                name: "空白页面",
                component: () => import("@/views/emptyPage/index.vue")
            }
        ]
    },

    // 所有未定义路由，全部重定向到404页
    // {path: "/:catchAll(.*)", redirect: "/404"},
];
const router = createRouter({
    history: createWebHistory(),
    routes,
});

export default router;
